home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / util / misc / cycledbase.lha / CycleDBase / CycleDBaseGadgets.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-07-05  |  10.0 KB  |  339 lines

  1. /* Gadgets.c */
  2.  
  3. /* File contains functions which create and handle interaction with all
  4. window gadgets */
  5.  
  6. #include <exec/types.h>
  7. #include <clib/dos_protos.h>
  8. #include <clib/exec_protos.h>
  9. #include <clib/gadtools_protos.h>
  10. #include <clib/graphics_protos.h>
  11. #include <clib/intuition_protos.h>
  12. #include <graphics/gfxmacros.h>
  13. #include <graphics/GfxBase.h>
  14. #include <intuition/intuition.h>
  15. #include <intuition/IntuitionBase.h>
  16. #include <libraries/gadtools.h>
  17. #include <string.h>
  18. #include <stdlib.h>
  19. #include <stdio.h>
  20.  
  21. #include "CycleDBase.h"
  22.  
  23. /*
  24. ** Function to handle a GADGETUP or GADGETDOWN event.  
  25. */
  26. BOOL handleGadgetEvent(struct Screen *mysc, struct Window *win, struct Gadget *gad, UWORD code,
  27.     struct Gadget *my_gads[])
  28. {
  29. switch (gad->GadgetID)
  30.     {
  31.     case MYGAD_PREVIOUS:
  32.         return(TRUE);
  33.         break;
  34.     case MYGAD_NEXT:
  35.         return(TRUE);
  36.         break;
  37.     case MYGAD_DESTGAD:
  38.         break;
  39.     case MYGAD_DATEGAD:
  40.         break;
  41.     case MYGAD_DIST1:
  42.         break;
  43.     case MYGAD_DISTPOINT:
  44.         break;
  45.     case MYGAD_DIST2:
  46.         break;
  47.     case MYGAD_CYCLEOUTH:
  48.         break;
  49.     case MYGAD_CYCLEOUTM:
  50.         break;
  51.     case MYGAD_CYCLEBACKH:
  52.         break;
  53.     case MYGAD_CYCLEBACKM:
  54.         break;
  55.     case MYGAD_TRAINTICK:
  56.         break;
  57.     case MYGAD_TRAINOUTH:
  58.         break;
  59.     case MYGAD_TRAINOUTM:
  60.         break;
  61.     case MYGAD_TRAINBACKH:
  62.         break;
  63.     case MYGAD_TRAINBACKM:
  64.         break;
  65.     case MYGAD_TOTTIMEH:
  66.         break;
  67.     case MYGAD_TOTTIMEM:
  68.         break;
  69.     }
  70.     return(FALSE);
  71. }
  72.  
  73. /*
  74. ** Function to handle vanilla keys.
  75. */
  76. BOOL handleVanillaKey(struct Window *win, UWORD code,
  77.     struct Gadget *my_gads[], int index, int& direction)
  78. {
  79. switch (code)
  80.     {
  81.     case ',':
  82.         direction = -1;
  83.         return(TRUE);
  84.         break;
  85.     case '.':
  86.         direction = 1;
  87.         return(TRUE);
  88.         break;
  89.     case 'd':
  90.     case 'D':
  91.         ActivateGadget(my_gads[MYGAD_DESTGAD], win, NULL);
  92.         break;
  93.     case 't':
  94.     case 'T':
  95.         // Change to opposite value and update display
  96.         cycledata[index].train = !cycledata[index].train;
  97.         GT_SetGadgetAttrs(my_gads[MYGAD_TRAINTICK], win, NULL, GTCB_Checked, cycledata[index].train, TAG_END);
  98.         GT_BeginRefresh(win);
  99.         GT_EndRefresh(win, TRUE);
  100.         break;
  101.     }
  102.     return(FALSE);
  103. }
  104.  
  105. /*
  106. ** Here is where all the initialization and creation of GadTools gadgets
  107. ** take place.  This function requires a pointer to a NULL-initialized
  108. ** gadget list pointer.  It returns a pointer to the last created gadget,
  109. ** which can be checked for success/failure.
  110. */
  111. struct Gadget *createAllGadgets(struct Gadget **glistptr, void *vi,
  112.     UWORD topborder, struct Gadget *my_gads[], struct StringInfo *gad_ptr[])
  113. {
  114. struct NewGadget ng;
  115. struct Gadget *gad;
  116.  
  117. /* All the gadget creation calls accept a pointer to the previous gadget, and
  118. ** link the new gadget to that gadget's NextGadget field.  Also, they exit
  119. ** gracefully, returning NULL, if any previous gadget was NULL.  This limits
  120. ** the amount of checking for failure that is needed.  You only need to check
  121. ** before you tweak any gadget structure or use any of its fields, and finally
  122. ** once at the end, before you add the gadgets.
  123. */
  124.  
  125. /* The following operation is required of any program that uses GadTools.
  126. ** It gives the toolkit a place to stuff context data.
  127. */
  128. gad = CreateContext(glistptr);
  129.  
  130. /* Since the NewGadget structure is unmodified by any of the CreateGadget()
  131. ** calls, we need only change those fields which are different.
  132. */
  133.  
  134. ng.ng_LeftEdge   = 40;
  135. ng.ng_TopEdge    = 10+topborder;
  136. ng.ng_Width      = 20;
  137. ng.ng_Height     = 10;
  138. ng.ng_GadgetText = "<";
  139. ng.ng_TextAttr   = &Topaz80;
  140. ng.ng_VisualInfo = vi;
  141. ng.ng_GadgetID   = MYGAD_PREVIOUS;
  142. ng.ng_Flags      = NG_HIGHLABEL;
  143. my_gads[MYGAD_PREVIOUS] = gad = CreateGadget(BUTTON_KIND, gad, &ng,
  144.                     TAG_END);
  145.  
  146. ng.ng_LeftEdge   = 70;
  147. ng.ng_GadgetText = "";
  148. ng.ng_GadgetID   = MYGAD_PREVTEXT;
  149. my_gads[MYGAD_PREVTEXT] = gad = CreateGadget(TEXT_KIND, gad, &ng,
  150.                     GTTX_Text,   "Previous record",
  151.                     TAG_END);
  152.  
  153. ng.ng_LeftEdge   = 215;
  154. ng.ng_Width      = 50;
  155. ng.ng_GadgetText = "";
  156. ng.ng_GadgetID   = MYGAD_RECCOUNT;
  157. my_gads[MYGAD_RECCOUNT] = gad = CreateGadget(NUMBER_KIND, gad, &ng,
  158.                     GTNM_Number,        1,
  159.                     GTNM_Border,        TRUE,
  160.                     GTNM_Justification, GTJ_LEFT,
  161.                     TAG_END);
  162.  
  163. ng.ng_LeftEdge   = 290;
  164. ng.ng_GadgetText = "";
  165. ng.ng_GadgetID   = MYGAD_NEXTTEXT;
  166. my_gads[MYGAD_NEXTTEXT] = gad = CreateGadget(TEXT_KIND, gad, &ng,
  167.                     GTTX_Text,   "Next record",
  168.                     GT_Underscore, '_',
  169.                     TAG_END);
  170.  
  171. ng.ng_LeftEdge   = 390;
  172. ng.ng_Width      = 20;
  173. ng.ng_Height     = 10;
  174. ng.ng_GadgetText = ">";
  175. ng.ng_GadgetID   = MYGAD_NEXT;
  176. my_gads[MYGAD_NEXT] = gad = CreateGadget(BUTTON_KIND, gad, &ng,
  177.                     TAG_END);
  178.  
  179. ng.ng_TopEdge   += 20;
  180. ng.ng_LeftEdge   = 120;
  181. ng.ng_Width      = 150;
  182. ng.ng_Height     = 12;
  183. ng.ng_GadgetText = "_Destination:";
  184. ng.ng_GadgetID   = MYGAD_DESTGAD;
  185. my_gads[MYGAD_DESTGAD] = gad = CreateGadget(STRING_KIND, gad, &ng,
  186.                     GTST_String,   "",
  187.                     GTST_MaxChars, 100,
  188.                     GT_Underscore,    '_',
  189.                     TAG_END);
  190. gad_ptr[0] = (struct StringInfo *) gad->SpecialInfo;
  191.  
  192. ng.ng_LeftEdge  += 210;
  193. ng.ng_Width      = 90;
  194. ng.ng_GadgetText = "Date:";
  195. ng.ng_GadgetID   = MYGAD_DATEGAD;
  196. my_gads[MYGAD_DATEGAD] = gad = CreateGadget(STRING_KIND, gad, &ng,
  197.                     GTST_String,   "",
  198.                     GTST_MaxChars, 8,
  199.                     GT_Underscore, '_',
  200.                     TAG_END);
  201. gad_ptr[1] = (struct StringInfo *) gad->SpecialInfo;
  202.  
  203. ng.ng_LeftEdge   = 144;
  204. ng.ng_Width      = 60;
  205. ng.ng_TopEdge   += 20;
  206. ng.ng_GadgetText = "Cycle Distance:";
  207. ng.ng_GadgetID   = MYGAD_DIST1;
  208. my_gads[MYGAD_DIST1] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  209.                     GTIN_Number,     0,
  210.                     GTIN_MaxChars,   4,
  211.                     GT_Underscore, '_',
  212.                     TAG_END);
  213.  
  214. ng.ng_Width      = 10;
  215. ng.ng_LeftEdge   = 204;
  216. ng.ng_GadgetText = "";
  217. ng.ng_GadgetID   = MYGAD_DISTPOINT;
  218. my_gads[MYGAD_DISTPOINT] = gad = CreateGadget(TEXT_KIND, gad, &ng,
  219.                     GTTX_Text,             ".",
  220.                     GT_Underscore,         '_',
  221.                     TAG_END);
  222.  
  223. ng.ng_LeftEdge   = 214;
  224. ng.ng_Width      = 60;
  225. ng.ng_GadgetText = "";
  226. ng.ng_GadgetID   = MYGAD_DIST2;
  227. my_gads[MYGAD_DIST2] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  228.                     GTIN_Number,   0,
  229.                     GTIN_MaxChars, 4,
  230.                     GT_Underscore, '_',
  231.                     TAG_END);
  232.  
  233. ng.ng_TopEdge   += 20;
  234. ng.ng_LeftEdge   = 144;
  235. ng.ng_GadgetText = "Cycle Out Time:";
  236. ng.ng_GadgetID   = MYGAD_CYCLEOUTH;
  237. my_gads[MYGAD_CYCLEOUTH] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  238.                     GTIN_Number,   0,
  239.                     GTIN_MaxChars, 3,
  240.                     GT_Underscore, '_',
  241.                     TAG_END);
  242.  
  243. ng.ng_LeftEdge   = 214;
  244. ng.ng_GadgetText = "";
  245. ng.ng_GadgetID   = MYGAD_CYCLEOUTM;
  246. my_gads[MYGAD_CYCLEOUTM] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  247.                     GTIN_Number,   0,
  248.                     GTIN_MaxChars, 2,
  249.                     GT_Underscore, '_',
  250.                     TAG_END);
  251.  
  252. ng.ng_TopEdge   += 20;
  253. ng.ng_LeftEdge   = 152;
  254. ng.ng_GadgetText = "Cycle Back Time:";
  255. ng.ng_GadgetID   = MYGAD_CYCLEBACKH;
  256. my_gads[MYGAD_CYCLEBACKH] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  257.                     GTIN_Number,   0,
  258.                     GTIN_MaxChars, 3,
  259.                     GT_Underscore, '_',
  260.                     TAG_END);
  261.  
  262. ng.ng_LeftEdge   = 222;
  263. ng.ng_GadgetText = "";
  264. ng.ng_GadgetID   = MYGAD_CYCLEBACKM;
  265. my_gads[MYGAD_CYCLEBACKM] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  266.                     GTIN_Number,   0,
  267.                     GTIN_MaxChars, 2,
  268.                     GT_Underscore, '_',
  269.                     TAG_END);
  270.  
  271. ng.ng_TopEdge   += 20;
  272. ng.ng_LeftEdge   = 72;
  273. ng.ng_GadgetText = "_Train?";
  274. ng.ng_GadgetID   = MYGAD_TRAINTICK;
  275. my_gads[MYGAD_TRAINTICK] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  276.                     GTCB_Checked,  FALSE,
  277.                     GT_Underscore, '_',
  278.                     TAG_END);
  279.  
  280. ng.ng_LeftEdge   = 190;
  281. ng.ng_GadgetText = "Out Time:";
  282. ng.ng_GadgetID   = MYGAD_TRAINOUTH;
  283. my_gads[MYGAD_TRAINOUTH] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  284.                     GTIN_Number,      0,
  285.                     GTIN_MaxChars,    3,
  286.                     GT_Underscore,  '_',
  287.                     TAG_END);
  288.  
  289. ng.ng_LeftEdge   = 260;
  290. ng.ng_GadgetText = "";
  291. ng.ng_GadgetID   = MYGAD_TRAINOUTM;
  292. my_gads[MYGAD_TRAINOUTM] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  293.                     GTIN_Number,      0,
  294.                     GTIN_MaxChars,    2,
  295.                     GT_Underscore,  '_',
  296.                     TAG_END);
  297.  
  298. ng.ng_TopEdge   += 20;
  299. ng.ng_LeftEdge   = 198;
  300. ng.ng_GadgetText = "Back Time:";
  301. ng.ng_GadgetID   = MYGAD_TRAINBACKH;
  302. my_gads[MYGAD_TRAINBACKH] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  303.                     GTIN_Number,      0,
  304.                     GTIN_MaxChars,    3,
  305.                     GT_Underscore,  '_',
  306.                     TAG_END);
  307.  
  308. ng.ng_LeftEdge   = 268;
  309. ng.ng_GadgetText = "";
  310. ng.ng_GadgetID   = MYGAD_TRAINBACKM;
  311. my_gads[MYGAD_TRAINBACKM] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  312.                     GTIN_Number,      0,
  313.                     GTIN_MaxChars,    2,
  314.                     GT_Underscore,  '_',
  315.                     TAG_END);
  316.  
  317. ng.ng_TopEdge   += 20;
  318. ng.ng_LeftEdge   = 112;
  319. ng.ng_GadgetText = "Total Time:";
  320. ng.ng_GadgetID   = MYGAD_TOTTIMEH;
  321. my_gads[MYGAD_TOTTIMEH] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  322.                     GTIN_Number,   0,
  323.                     GTIN_MaxChars, 3,
  324.                     GT_Underscore, '_',
  325.                     TAG_END);
  326.  
  327. ng.ng_LeftEdge   = 180;
  328. ng.ng_GadgetText = "";
  329. ng.ng_GadgetID   = MYGAD_TOTTIMEM;
  330. my_gads[MYGAD_TOTTIMEM] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  331.                     GTIN_Number,   0,
  332.                     GTIN_MaxChars, 2,
  333.                     GT_Underscore, '_',
  334.                     TAG_END);
  335.  
  336. return(gad);
  337. }
  338.  
  339.